It is well recognized that power consumption is a primary concern in battery-powered electronics applications. For example, power consumption is a major concern with embedded processors that are employed in wireless electronics applications, such as laptop computers and handheld devices. These devices require longevity with conservation of battery life. It is further recognized that higher power consumption also results in the generation of higher heat, which can impair the performance of the electronics. Moreover, higher product costs may result from the need to use special packaging and housings in order to dissipating the heat.
With CMOS Application Specific Integrated Circuit (ASIC) devices, the largest factor of power consumption is "dynamic power." Dynamic power refers to the power consumed during the clocked operation of the device. In this regard, as flip-flops and CMOS logic change logic states (i.e., `0` to `1` or `1` to `0`), the associated transistors will consume power. Therefore, running the clock rate of the digital electronics as slowly as possible will reduce dynamic power consumption, since there will be fewer number of logic transitions per unit of time. However, reducing the clock rate of the digital electronics during periods of active device operation may not be an option in some situations. In this regard, high speed performance may demand high speed clocking in many cases. However, clocking a digital electronics device fast when it is in an "idle" state (i.e., not performing useful work) is wasteful of power, since a slower clock speed is suitable under such conditions.
The prior art discloses numerous power reduction techniques including those which use sleep modes with wait states, clock gating, or a selectable clock divider. An object of these prior art techniques is to reduce the switching clock frequency when the processor is in an idle state. However, these techniques require software to determine when to put the device in a sleep mode. Therefore, a watchdog background process typically runs to monitor processor utilization, and indicates when the processor is in an idle state. Upon detecting an idle state, the software must then enable a sleep mode to run the processor at a slow clock speed. In addition, an interrupt handler must be provided to disable the sleep mode and start the processor running again at full clock speed when the idle state has ended (i.e., when an active state has resumed). Consequently, the enable/disable function of the sleep mode requires significant overhead, and in addition typically requires on the order of hundreds of clock cycles to perform the modal switch associated with a change from idle state to active state. Thus, the "sleep modes" utilized in prior art techniques may be termed "heavyweight," since the act of enabling and disabling the sleep mode requires enormous overhead, including a significant number of clock cycles to perform the switch out of the sleep mode.
Another disadvantage of the "sleep modes" utilized in the prior art that use gated clocks, is the inherent design complexity. This leads to reduction in the overall top speed of the processor and presents clock skew issues among different clock domains.
The present invention addresses these and other disadvantages of the prior art to provide a dynamic and efficient system for clocking a digital electronics device at a fast clock speed only when the device requires the high speed performance (active state), and to clock the device at a slower clock speed at other times.